********************************* *** MULTIPLE SPLINEATTACH 1.2 *** ********************************* MSA 1.2 let's you attach one or several objects along a spline. **************************** *** HOW TO USE THE PLUG? *** **************************** Basic workflow: * Create a spline that you want to place the objects along * Create an object group with objects in or use a single object * Create an animation track on the spline with a key * Adjust the parameters Extra things: * Create an align spline * Create a scaling spline * Create more keys for animation ******************* *** THE DIALOGS *** ******************* MSA 1.2 uses an adaptive dialog system which means that what you enter in the earlier dialogs decides what dialogs will show up next. This is a guide to all possible routes. * First dialog: Multiple Splineattach Settings Group: The name of the object group which contains the objects to be attached, or if in single mode the one object to attach. Rename: see "NAME POSITIONING" Type: (G, NIG, S) 1. attaches all objects inside the Group 2. similarily but internal groups aren't attached 3. attaches a single object (entered in group-field) Align and position type: (1 and 2 apply to both) 1. enter a start value for the first attached object and an end value for the last and the plug interpolates between them 2. enter a start value and then an interval that the value increases with for every object 3. (aligning) align to a point that lies a specified length ahead on the spline or to the base of the next object 3. (positioning) attaches each object to the position the object is "named" see "NAME POSITIONING" for more help 4. (positioning) the new feature that creates real cool effects :-) see "SCALE-SPLINE POSITIONING" for more help Use scaling: 0. Scaling is not enabled and the scaling dialog will not be showed 1. Scaling is enabled and a scaling dialog will appear * Second dialog, Position type: 1 Enter the unit you want to use in the "From:"-field 1. Percent of the length of the spline 2. Length along spline in Meter 3. Splinepoints (integers give exact match but one can use decimal numbers to specify positions between points) Enter the values you want in the corresponding from and two fields. The first object is placed at the from-value and the last at the to-value. The others are placed in between. Negative wrap: If this is 1 the plug treates a negative value as to be counted from the end of the spline. Otherwise negatives are rounded to zero (internally). Positive wrap: If this is 1 the plug treates values that exceeds the splines length as if they had looped, i.e. 120% means 20% because the length is 100%. This also applies to negative numbers (-120% becomes -20%). Otherwise the numbers are truncated to the length of the spline. * Second dialog, Position type: 2 Exactly similar to "Position type: 1" but here the objects are placed at a start position and then each object is placed a specified interval ahead of the former. * Second dialog, Position type: 3 see "NAME POSITIONING" * Second dialog, Position type: 4 see "SCALE-SPLINE POSITIONING" * Third dialog, Align type: 1 and 2 Method: (the method of aligning) 1. Vector: This aligns the Z-axis along the spline and the Y-axis is trying to point at a user-specified world-vector. (standard is straight up) 2. World: This rotates the objects by normal HPB values as they would be oriented if they were outside all hierarchy with the same values. (i.e. enter 0,0,0 and the axises will always point along their world equivalents 3. Object: Rotates the object by HPB but adjusts the objects as if they were inside the spline-object. (i.e. enter 0,0,0 and the axises will always be along the splines axises) 4. Spline: Enter the name of an align spline. The Z-axis will be aligned along with the tangent and the Y-axis will try to point at the current position along the align spline. (this can provide exact aligning when other generalized methods run into troubles) Align (on/off): Tells the plug which rotations to adjust on the objects. If only heading is 1 then the objects wont pitch or bank. Keep in mind that this doesn't mean pitch and bank is set to 0, they keep their previous values. * Fourth dialog: Align type: 1 Align method: 1 Enter a vector (the coordinates for a point to which one can imagine that a line from origo points to) in the appropriate fields. In you want to use the "To:" fields you need to put a 1 in the "To:" field. You can also specify a banking value. * Fourth dialog: Align type: 2 Align method: 1 Similar to the above except that this one uses a start-value and an interval instead (similar to the two position variants). * Fourth dialog: Align type: 1 and 2 Align method: 2 and 3 Enter HPB-values to use for the aligning described in the align method text. Align type one and two is differentiated in the same way as before. * Fourth dialog: Align type: 1 and 2 Align method: 4 This aligns by an align spline. The HPB-values are for manual correction (they are added to the rotation) and are used as in method 2 and 3. * Third dialog: Align type: 3 This align type utilizes method 1 and 4 above (here called 1 and 2) in a similar way except that it aligns the Z-axis, not along the tangent, but instead to a point further along the spline. Distance type: This is the distance to the point the Z-axis is pointing at. Similar to the position units (percent, meter and point) except that this also accepts 0. 0 means that the Z-axis is pointed to the position of the next object (the last object is oriented along the tangent). Distance: Enter the distance to the align point. Big values gives more lookahead. Not used with distance type 0. * Fifth dialog: Scaling: 1 With scaling enabled you don't just have control over the posisition and rotation of your objects, but you also can adjust their scale. The easiest use is to just change the base scale over time, but you can also use several scaling splines and even morph them. Base-scale: All scales are multiplied with this value, i.e. set it to two and all objects will be twice the size. Can be animated over time. X-Y-Z-spline: The name of the scaling spline you wish to use for the scaling axis. If use X for all is enabled the X-spline is used for all the axises. Use X for all: see above Base: This is the distance to the scale-spline that should generate a scale of 1. If the scale-spline-point is further away the scale is >1 and the other way around. If this is -1 the corresponding spline won't be used and the scale on that axis will be 1 (still multiplied with base scale though). If you want "WYSIWYG" you should set the base value to your objects "radius" along that axis. About the scale splines: This is how the plug uses the scaling splines First it finds a point along the scaling spline at the same position as along the placing spline. Then it zeros the X-value of the point, i.e. places it on the ZY- plane. There it measures the distance from origo (0,0). That value is divided by the corresponding base value to give the relative scale. How should they be placed: The scaling splines should be placed along the positive X-axis. I chose to make it like this to enable easy animation of the position-spline (otherwise you would have to animate your scaling spline in a similar way by hand). See one of the example scenes if your still confused. ************************ *** NAME POSITIONING *** ************************ Two things was left out of the above description as they deserve an own section. One of the is name placing. This is a way to incorporate more advanced placing schemes than the two basic method of start and end and start and interval can do. It's more like several single placements, just that they are easily controlled. The key is that it uses the objects' names for placing. If an object is name "0.5" (and unit is %) then it's placed at 50%. This dialog comes up if you enter "3" in position type: Start: This is entered like in the other modes. The start value is added to the name value and can be useful if you want to move all objects together. Wrap: These two are also similar to the other modes. Pos. scale: All positions are multiplied with this value (before being added to the start value). Useful if you want to...well...make your objects come closer to each other. Autoparsing: To make sure that the objects really are placed at their appropriate position, even when you change the name all the time, the plugs checks each objects name every time if this is 1. When you are satisfied you can set this option to 0 so no unnecessary processor power is spent. (though it doesn't bog it down that much) Even though the plug checks the position every time it's called, due to the nature of C.O.F.F.E.E. it's only called when you move the time-line or redraw (ctrl-F). There's nothing I can do about this. Rename: (in the first dialog) But, isn't it very hard to name all the object? No, fortunately I have added an option to rename all the objects to their position using any of the other methods. Just attach your objects as normal, using type 1 or 2 for positioning, and enter 1 in "Rename:". All objects are now named accordingly. Go into the key again, put 0 into "Rename:" and 3 into position type. Then make your changes by changing the name of the objects. ******************************** *** SCALE-SPLINE POSITIONING *** ******************************** This is the other section left out. It was a late addition to the plug and could be improved in many ways, but it does work and can create really cool results. This is mostly thought of to be used with a lot of splines and a loft NURBS but I'm sure that you can think of other uses as well. With the normal scaling you can just adjust the scale along the object. But what if wanted to create a shape that goes back again or make a hollow shape. Of course you could do this with name placing but it would be a real PITA to do. With scale-spline positioning you can instead just draw the outline of the object and the rest is magic. When you enter 4 in the position type field you are faced with a dialog similar to name placing. This is because it uses the same code to place the objects but it gets it's values not from the names but from the discarded X-values of the X-scaling-spline. It's recommended that you set units to meters and turn of wrap in the dialog. See the example scene and examine the options to get a grip of how it works... ********************************* *** MORHPING EXTERNAL SPLINES *** ********************************* If you try to morph a scaling or align spline you will notice that it doesn't work. This is because other objects' animations can't see the result. They still see the base object. To fix this I made another plug (included) called globalize. It is placed on the morphing object and changes it's base object to reflect the morph. This has the draw-back that the morph is irreversible, i.e. you can't just remove the morph-track, but that's a small prize for morphing scale splines :-) You can also use globalize to globalize position, for example if you want to use "Point at..." on a "Midpoint"-ed object you can with globalize. See the example scenes if you're still confused... Please mail me if you have any questions at cst@wineasy.se! Mikael Sterner, XLent Plugs